﻿#pragma once
#include "BinarySearchTree.h"

// 平衡性：
// 每颗子树的大小，不小于其兄弟的子树的大小，即每颗叔叔树的大小，不小于其任何侄子子树的大小
class SizeBalancedTree : public BinarySearchTree
{
public:
    SizeBalancedTree();
    BinaryTreeNode* add(int value);
    void remove(int value);

private:
    void macroscopicalBalanced(BinaryTreeNode* head);
    BinaryTreeNode* microcosmicBalanced(BinaryTreeNode* head);
};